import Fingerprint2 from "fingerprintjs2";
const createFingerprint = () => {
  window._$tw = {}
  // 选择哪些信息作为浏览器指纹生成的依据
  const options = {
    fonts: {
      extendedJsFonts: true,
    },
    excludes: {
      audio: true,
      userAgent: true,
      enumerateDevices: true,
      touchSupport: true,
    },
  };

  // 异步方法，外面无法获取到 
  // let fingerprint = Fingerprint2.get(options, (components) => {
  //   // 参数只有回调函数或者options为{}时，默认浏览器指纹依据所有配置信息进行生成
  //   const values = components.map((component) => component.value); // 配置的值的数组
  //   const fingerprint = Fingerprint2.x64hash128(values.join(""), 31); // 生成浏览器指纹
  //   console.log(components);
  //   // console.log(values);
  //   console.log(fingerprint);
  //   // localStorage.setItem("browserId", fingerprint); // 存储浏览器指纹，在项目中用于校验用户身份和埋点
  //   document.getElementById('root').innerHTML = fingerprint
  //   window._$tw = {
  //     getBrowserId: fingerprint
  //   }
  // });

  // 封装成promise 在其他地方调用该方法获取 指纹值
  let fingerprintPro = Fingerprint2.getPromise(options);
  // console.log(fingerprint, 'fingerprint')
  return fingerprintPro.then((res, rej) => {
    // console.log(res); // 配置的值的数组 
    const values = res.map((component) => component.value); // 配置的值的数组
    const fingerprint = Fingerprint2.x64hash128(values.join(""), 31); // 生成浏览器指纹
    // console.log(fingerprint);
    window._$tw.getBrowserId = fingerprint;
    // document.getElementById('root').innerHTML = fingerprint
   return new Promise((resolve, reject) => {
      resolve(fingerprint)
    })
  })
};

export {
  createFingerprint
}

